package per.hx.bs.web.yw.service;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.context.annotation.Primary;
import org.springframework.web.bind.annotation.*;
import per.hx.bs.entity.yw.YwAppraisalItemDO;
import per.hx.bs.entity.yw.YwAppraisalTypeDO;

import java.util.List;

/**
 * @author HuXing
 * @date 2018/4/14  0:32
 */
@Primary
@FeignClient(value = "Huxingbs-Sys-Service")
public interface YwAppraisalService {

    /**
     * 获取指标
     *
     * @param type 通过一级指标获取列表
     * @return 指标集合
     */
    @GetMapping(value = "yw-service/appraisal/list")
    List<YwAppraisalItemDO> list(@RequestParam("type") String type);

    /**
     * 获取一级指标
     *
     * @return 一级指标
     */
    @GetMapping(value = "yw-service/appraisal/type")
    List<YwAppraisalTypeDO> type();

    /**
     * 保存一级指标
     *
     * @param appraisalTypeDO 一级指标
     * @return 影响行数
     */
    @PostMapping(value = "yw-service/appraisal/type/save")
    int saveType(@RequestBody YwAppraisalTypeDO appraisalTypeDO);

    /**
     * 通过id获取 一级指标
     *
     * @param id id
     * @return 一级指标
     */
    @GetMapping(value = "yw-service/appraisal/type/{id}")
    YwAppraisalTypeDO findTypeById(@PathVariable("id") String id);

    /**
     * 修改 一级指标
     *
     * @param typeDO 一级指标
     * @return 影响行数
     */
    @PutMapping(value = "yw-service/appraisal/type/update")
    int updateType(@RequestBody YwAppraisalTypeDO typeDO);

    /**
     * 删除一级指标
     *
     * @param id 指标id
     * @return 影响行数
     */
    @DeleteMapping(value = "yw-service/appraisal/type/delete/{id}")
    int deleteType(@PathVariable("id") String id);

    /**
     * 通过id获取 二级指标
     *
     * @param id id
     * @return 二级指标
     */
    @GetMapping(value = "yw-service/appraisal/item/{id}")
    YwAppraisalItemDO findItemById(@PathVariable("id") String id);

    /**
     * 保存二级指标
     *
     * @param itemDO 二级指标
     * @return 影响行数
     */
    @PostMapping(value = "yw-service/appraisal/item/save")
    int saveItem(@RequestBody YwAppraisalItemDO itemDO);

    /**
     * 修改 二级指标
     *
     * @param itemDO 一级指标
     * @return 影响行数
     */
    @PutMapping(value = "yw-service/appraisal/item/update")
    int updateItem(@RequestBody YwAppraisalItemDO itemDO);

    /**
     * 删除二级指标
     *
     * @param id 指标id
     * @return 影响行数
     */
    @DeleteMapping(value = "yw-service/appraisal/item/delete/{id}")
    int deleteItem(@PathVariable("id") String id);

    /**
     * 检查是否存在id
     *
     * @param id 指标id
     * @return true/false
     */
    @GetMapping(value = "yw-service/appraisal/item/hasChild/{id}")
    boolean itemHasChild(@PathVariable("id") String id);

    /**
     * 通过ParentId获取绩效津贴考核二级指标
     *
     * @param pId ParentId
     * @return item集合
     */
    @GetMapping(value = "yw-service/appraisal/item/parentId/{pId}")
    List<YwAppraisalItemDO> selectByParentId(@PathVariable("pId") String pId);

    /**
     * 获取 指标树
     *
     * @param type 一级指标
     * @return 指标
     */
    @GetMapping(value = "yw-service/appraisal/appraisalTree")
    String getTree(@RequestParam("type") String type);
}
